export default function(cls) {

  cls.defaultOptions = {
    positions: [],
    show: true,
    showHelper: false,
    width: 2,
    depthTest: false,
    // depthMask: false, // Appearance.getRenderState()函数会根据translucent来强制修改depthMask属性，透明的就强制不写深度，所以不能直接设置renderState
    // forceTranslucent: false, // 强制设置是否透明，如果强制透明，则depthMask为false
    forcePass: undefined,
    arcType: 'GEODESIC', // GEODESIC 地表最近距离插值 NONE 直线，不插值 RHUMB 保持地理方向一致的插值
    loop: false,
    material: {
      type: 'ColorMaterial',
      ColorMaterial: {},
      PolylineDashMaterial: {},
      PolylineArrowMaterial: {},
      ODLineMaterial: {},
      PolylineGlowMaterial: {},
      PolylineOutlineMaterial: {}
    },
    ground: false
  };

  cls.schema = {
    title: "Polyline Property",
    type: "object",
    properties: {
      /**
       * 位置数组，形式如 [[2.012, 0.65, 10], [1.9, 0.7, 20], ...] 每一个元素分别表示 经度、纬度、高度，其中经度纬度以弧度为单位，高度以米为单位
       * @type {array}
       * @instance
       * @default true
       * @memberof Obj.Polyline
       */
      positions: {
        type: 'array',
        title: '位置数组',
        default: [],
        description: '位置数组'
      },
      /**
       * 是否在三维窗口中显示
       * @type {boolean}
       * @instance
       * @default true
       * @memberof Obj.Polyline
       */
      show: {
        type: 'boolean',
        title: '是否在三维窗口中显示',
        default: true,
        description: '是否在三维窗口中显示'
      },
      /**
       * 是否显示辅助线框
       * @type {boolean}
       * @instance
       * @default false
       * @memberof Obj.Polyline
       */
      showHelper: {
        type: 'boolean',
        title: '是否显示辅助线框',
        default: false,
        description: '是否显示辅助线框'
      },
      /**
       * 线宽，单位像素
       * @type {number}
       * @instance
       * @default 2.0
       * @memberof Obj.Polygon
       */
      width: {
        type: 'number',
        title: '线宽，单位像素',
        default: 2.0,
        description: '线宽，单位像素'
      },
      /**
       * 是否开启深度检测
       * @type {boolean}
       * @instance
       * @default false
       * @memberof Obj.Polyline
       */
      depthTest: {
        type: 'boolean',
        title: '是否开启深度检测',
        default: false,
        description: '是否开启深度检测'
      },
      /**
       * 强制修改渲染顺序
       * 目前Cesium的渲染顺序有： <br/>
       *  ENVIRONMENT : 0, <br/>
       *  COMPUTE : 1, <br/>
       *  GLOBE : 2, <br/>
       *  TERRAIN_CLASSIFICATION : 3, <br/>
       *  CESIUM_3D_TILE : 4, <br/>
       *  CESIUM_3D_TILE_CLASSIFICATION : 5, <br/>
       *  CESIUM_3D_TILE_CLASSIFICATION_IGNORE_SHOW : 6, <br/>
       *  OPAQUE : 7, <br/>
       *  TRANSLUCENT : 8, <br/>
       *  OVERLAY : 9, <br/>
       *  NUMBER_OF_PASSES : 10 <br/>
       * @type {number|undefined}
       * @instance
       * @default undefined
       * @memberof Obj.Polyline
       */
      forcePass: {
        type: ['number', 'undefined'],
        title: '是否开启深度检测',
        default: undefined,
        description: '是否开启深度检测'
      },
      /**
       * 弧线样式，因为地球是圆形的，两点之间不能走直线，需要确定这个弧线该如何走 <br/>
       * 弧线样式有3种： <br/>
       * GEODESIC 地表最近距离插值 <br/>
       * NONE 直线，不插值 <br/>
       * RHUMB 保持地理方向一致的插值 <br/>
       * @type {string}
       * @instance
       * @default 'GEODESIC'
       * @memberof Obj.Polyline
       */
      arcType: {
        type: 'string',
        title: '弧线样式',
        default: 'GEODESIC',
        description: '弧线样式'
      },
      /**
       * 折线材质设置
       * @type {object}
       * @property {string} - 类型，可以是Color/PolylineDash/PolylineArrow/PolylineGlow/PolylineOutline/XbsjODLine
       * @property {Obj.Polyline.Material.Color}  - 纯颜色材质
       * @property {Obj.Polyline.Material.PolylineDash} - 点画线材质
       * @property {Obj.Polyline.Material.PolylineArrow} - 箭头材质
       * @property {Obj.Polyline.Material.PolylineGlow} - 发光材质
       * @property {Obj.Polyline.Material.PolylineOutline} - 外轮廓线材质
       * @property {Obj.Polyline.Material.XbsjODLine} - OD线材质
       * @instance
       * @memberof Obj.Polyline
       */
      material: {},
      /**
       * 是否首尾相连
       * @type {boolean}
       * @instance
       * @default false
       * @memberof Obj.Polyline
       */
      loop: {
        type: 'boolean',
        title: '是否首尾相连',
        default: false,
        description: '是否首尾相连'
      },
      /**
       * 是否贴地
       * @type {boolean}
       * @instance
       * @default true
       * @memberof Obj.Polyline
       */
      ground: {
        type: 'boolean',
        title: '是否贴地',
        default: true,
        description: '是否贴地'
      }
    }
  };

  cls.classification = [{
    name: {
      chinese: '通用',
      english: 'General'
    },
    properties: ['positions', 'show', 'showHelper', 'width', 'depthTest', 'forcePass', 'arcType', 'loop',
      'material', 'ground'
    ]
  }];
}
